package com.hr.runnerbuddy;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Parcouropties extends Activity {
	
	private String parcourkeuzegemsnelheid;
	private String parcourkeuzemaxlooptijd;
	private String parcourkeuzeoptie;
	private String parcournaam;
	private Double parcourlengte;
	private TextView maximalelooptijd;
	private TextView gemiddeldesnelheid;
    
	String[] strings = {"Geen","Maximale looptijd", "Gemiddelde snelheid"};
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.parcouropties);
        Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
        mySpinner.setAdapter(new MyAdapter(Parcouropties.this, R.layout.row, strings));
        //set the action listener
        mySpinner.setOnItemSelectedListener(listener); 
    }
    
    public void onResume(){
    	super.onResume();
    	
    	//intent-variabelen uitlezen van parcouropties
        Button parcourstartenknop = (Button) findViewById(R.id.parcourstartenknop);
    	TextView textViewParcourlengte = (TextView) findViewById(R.id.textViewParcourlengte);
    	maximalelooptijd = (TextView) findViewById(R.id.textViewMaximaleLooptijd);
    	gemiddeldesnelheid= (TextView) findViewById(R.id.textViewGemiddeldeSnelheid);
    	Bundle extras = getIntent().getExtras();
    	
        if (extras != null) {
        	parcournaam = extras.getString("parcournaam");
        	parcourlengte = Double.parseDouble(extras.getString("parcourlengte"));
        	//Toast.makeText(getApplicationContext(), extras.getString("parcourlengte"), Toast.LENGTH_SHORT).show();;
        	textViewParcourlengte.setText("Parcourlengte: "+extras.getString("parcourlengte")+" m");
        }
        
    	parcourkeuzeoptie = "geen";
    	
    	parcourstartenknop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	
                // Perform action on click.
            	if(parcourkeuzeoptie == "geen"){
            		parcourkeuzegemsnelheid= "0";
            		parcourkeuzemaxlooptijd= "0";
            	}
            	
            	if(parcourkeuzegemsnelheid.length() != 0 && parcourkeuzemaxlooptijd.length() != 0){
            		//Toast.makeText(getApplicationContext(), parcourkeuzeoptie+" / "+parcourkeuzewaarde, Toast.LENGTH_SHORT).show();
		            Intent intent = new Intent(Parcouropties.this, Parcour.class);
		            intent.putExtra("parcourlengte", parcourlengte);
		            intent.putExtra("parcourkeuzegemsnelheid", parcourkeuzegemsnelheid);
		            intent.putExtra("parcourkeuzemaxlooptijd", parcourkeuzemaxlooptijd);
		            intent.putExtra("parcournaam", parcournaam);
		            intent.putExtra("parcourlengte", parcourlengte);
		            
		        	startActivity(intent);
            	}else{
            		Toast.makeText(getApplicationContext(), "Vul een waarde boven de 0 in", Toast.LENGTH_SHORT).show();
            	}
            }
        });
    }
    
	// implement action listener type of OnItemSelectedListener
	private OnItemSelectedListener listener =new OnItemSelectedListener() {
		 
	  //do what ever you want to do when item selected
	  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
	    //i get the item using selected item position and set it into selectedWeekDay
	   	 if(parent.getItemAtPosition(pos).toString() == "Geen"){
	   		parcourkeuzeoptie = "geen";
	   		LinearLayout myLayout = (LinearLayout)findViewById(R.id.laadparcouroptiesxml);
            myLayout.removeAllViewsInLayout();
	   	 }
	   	 
	   	 if(parent.getItemAtPosition(pos).toString() == "Maximale looptijd"){
	   		parcourkeuzeoptie = "Maximale looptijd";
	   		LinearLayout myLayout = (LinearLayout)findViewById(R.id.laadparcouroptiesxml);
            View v = getLayoutInflater().inflate(R.layout.parcouroptiesmaxtijd, myLayout, false);
            myLayout.removeAllViewsInLayout();
            myLayout.addView(v);
            
            final EditText editmaximalelooptijd = (EditText) findViewById(R.id.editMaximaleLooptijd);
            editmaximalelooptijd.addTextChangedListener(new TextWatcher(){
                public void afterTextChanged(Editable s) {
            		parcourkeuzemaxlooptijd = checkTextString(editmaximalelooptijd.getText().toString()); 
                	maximalelooptijd.setText("Maximale looptijd: "+parcourkeuzemaxlooptijd+" minuten");
                	parcourkeuzegemsnelheid = Integer.toString((int)((parcourlengte / 1000) / (Double.parseDouble(parcourkeuzemaxlooptijd) / 60)));
                	gemiddeldesnelheid.setText("Gemiddelde snelheid: "+parcourkeuzegemsnelheid+" km/u");
                }
                public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                public void onTextChanged(CharSequence s, int start, int before, int count){}
            }); 
	   	 }
	   	 
	   	 if(parent.getItemAtPosition(pos).toString() == "Gemiddelde snelheid"){
	   		parcourkeuzeoptie = "Gemiddelde snelheid";
	   		LinearLayout myLayout = (LinearLayout)findViewById(R.id.laadparcouroptiesxml);
            View v = getLayoutInflater().inflate(R.layout.parcouroptiesgemsnelheid, myLayout, false);
            myLayout.removeAllViewsInLayout();
            myLayout.addView(v);
            
            final EditText editgemiddeldesnelheid = (EditText) findViewById(R.id.editGemiddeldeSnelheid);
            editgemiddeldesnelheid.addTextChangedListener(new TextWatcher(){
                public void afterTextChanged(Editable s) {
                	parcourkeuzegemsnelheid = checkTextString(editgemiddeldesnelheid.getText().toString());
                	parcourkeuzemaxlooptijd = Integer.toString((int)((parcourlengte / 1000) / (Double.parseDouble(parcourkeuzegemsnelheid) / 60)));
                	maximalelooptijd.setText("Maximale looptijd: "+parcourkeuzemaxlooptijd+" minuten");
                	gemiddeldesnelheid.setText("Gemiddelde snelheid: "+parcourkeuzegemsnelheid+" km/u");
                }
                public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                public void onTextChanged(CharSequence s, int start, int before, int count){}
            }); 
	   	 }
	  }
	 
	  public void onNothingSelected(AdapterView<?> parent) {
	    
	  }
	};
	
	public String checkTextString(String tekst){
		
		//tekst = tekst.replace(",", ".");
		
		if(tekst.length() == 0 || Double.parseDouble(tekst) <= 0){
			tekst = "0";
    	}
		
		//tekst = tekst.replace(".", ",");
		
		return tekst;
	}
			
    public class MyAdapter extends ArrayAdapter<String>{
    	public MyAdapter(Context context, int textViewResourceId,   String[] objects) {
	    	super(context, textViewResourceId, objects);
    	}
    	
    	@Override
    	public View getDropDownView(int position, View convertView,ViewGroup parent) {
	    	return getCustomView(position, convertView, parent);
    	}
    	
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
	    	return getCustomView(position, convertView, parent);
    	}
    	
    	public View getCustomView(int position, View convertView, ViewGroup parent) {
    		LayoutInflater inflater=getLayoutInflater();
    		View row=inflater.inflate(R.layout.row, parent, false);
    		TextView label=(TextView)row.findViewById(R.id.optierij);
    		label.setText(strings[position]);
    		return row;
    	}
    	
    }
    
}